home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 April / EnigmA AMIGA RUN 06 (1996)(G.R. Edizioni)(IT)[!][issue 1996-04][Skylink CD V].iso / internet / others / spoolwatch.lha / SpoolWatch / Src / GetDest.c < prev    next >
C/C++ Source or Header  |  1995-09-15  |  2KB  |  83 lines

  1.  
  2. /*
  3.  *    Function    GetDest
  4.  *    Programmer    N.d'Alterio
  5.  *    Date        12/09/95
  6.  *
  7.  *  Synopsis:    Gets a string of length up to MAX_DEST_LEN from the
  8.  *        msg from the first line which has type as its 1st
  9.  *        character. The string contains the 2nd word on that
  10.  *        line. If the character is not found in MAX_HEADER_LINES
  11.  *        then an error code is returned.
  12.  *
  13.  *  Arguments:    filename            File to scan
  14.  *        type                N or T for news or mail
  15.  *        dest                String to return destination in
  16.  *
  17.  *  Returns:    0                If normal exit
  18.  *        >0                If error
  19.  *
  20.  *  Variables:    ch                Temp variable
  21.  *        rcode                Return code
  22.  *        done                Loop flag
  23.  *        line                Count of number of lines
  24.  *        fptr                file handle
  25.  * 
  26.  *  Functions:    fopen                Open file (ANSI)
  27.  *        fclose                Close file (ANSI)
  28.  *        fgetc                Get char (ANSI)
  29.  *        fgets                Get string (ANSI)
  30.  *        fscanf                Read input (ANSI)
  31.  *
  32.  *  $Id: GetDest.c 1.3 1995/09/15 22:15:04 daltern Exp $
  33.  *
  34.  */
  35.  
  36. #include "SpoolWatch.h"
  37.  
  38. #define MAX_HEADER_LINES    50
  39.  
  40. int GetDest( char *filename, char type, char *dest )
  41.  
  42. {
  43.  
  44.   int rcode = 0;
  45.   int done  = FALSE;
  46.   int lines = 0;
  47.   int ch    = 0;
  48.   
  49.   FILE *fptr;
  50.  
  51.   if ( fptr = fopen( filename, "r" ) ) {
  52.  
  53.       while ( !done && ( ch != EOF ) && ( lines < MAX_HEADER_LINES ) ) {
  54.     
  55.         if ( ( ch = fgetc( fptr ) ) == type ) {
  56.  
  57.             fscanf( fptr, "%*s" );
  58.             fgets( dest, (MAX_DEST_LEN-1), fptr );
  59.             done = TRUE;
  60.  
  61.         } else {
  62.     
  63.             while ( ( ( ch = fgetc( fptr ) ) != '\n' ) && ( ch != EOF ) ) {}
  64.             lines++;
  65.  
  66.         }   /* end if : find line starting with type */
  67.  
  68.       }   /* end while */
  69.   
  70.       fclose( fptr );
  71.  
  72.     if ( ( ch == EOF ) || ( lines == MAX_HEADER_LINES ) ) rcode = 10;
  73.  
  74.   }   /* end if */
  75.  
  76.   return rcode;
  77.  
  78. }   /* end function GetDest */
  79.  
  80. /*========================================================================*
  81.                 END FUNCTION GetDest
  82.  *========================================================================*/
  83.